/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.viajaconmigo.web.controladores;

import com.viajaconmigo.i18n.I18nManager;
import com.viajaconmigo.model.Pais;
import com.viajaconmigo.model.PlanEco;
import com.viajaconmigo.model.PlanOcio;
import com.viajaconmigo.model.i18n.Traduccion;
import com.viajaconmigo.service.DatoAuxiliarService;
import com.viajaconmigo.service.PropuestaService;
import com.viajaconmigo.web.controladores.util.JSFUtil;
import java.util.ArrayList;
import java.util.List;
import javax.faces.model.SelectItem;
import javax.inject.Inject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 *
 * @author Pablo
 */
public class ParentController {
    
    private final static Logger logger = LoggerFactory.getLogger(ParentController.class);

    private static List<SelectItem> plEcoSelect;
    private static List<SelectItem> plOcioSelect;
    private static List<SelectItem> paisSelect;

    protected Integer planEco;
    protected Integer planOcio;
    protected String descriplan;
    protected String descriplocio;

    protected String idioma = "ES"; ///////////////   Obtenerlo correctamente.

    @Inject
    protected PropuestaService propuestaService;

    @Inject
    protected DatoAuxiliarService datoAuxiliarService;
    
    @Inject
    protected I18nManager i18nManager;

    /**
     * Creates a new instance of ParentController
     */
    public ParentController() {
        super();
    }

    //public List cargaListas(List<SelectItem> paisSelect, List<SelectItem> plEcoSelect){
    public void cargaListaPaises() {
        try {
            paisSelect = new ArrayList<>();
            List<Pais> paises = datoAuxiliarService.getListaPaises();
            for (int i = 0; i < paises.size(); i++) {
                Pais pais = paises.get(i);
                //int idPais = paises.get(i).getIdPais();
                paisSelect.add(new SelectItem(pais.getIdPais(),
                        i18nManager.getTraduccion(pais, idioma).getLiteral()));
            }
        } catch (RuntimeException e) {
            JSFUtil.createMessageError("", "error_general");
            logger.error("Se he producido un error al cargar la lista de Paises",e);
        }
    }

    public void cargaListaPlEco() {
        try {
            plEcoSelect = new ArrayList<>();
            List<PlanEco> planesEco = datoAuxiliarService.getListaPlanesEco();
            for (int i = 0; i < planesEco.size(); i++) {
                //int idPlan = planesEco.get(i).getIdPlan();
                PlanEco plan = planesEco.get(i);
                //PlanEcoTrad pet = propuestaService.getPlanEcoTrad(plan, idioma);
                Traduccion t = i18nManager.getTraduccion(plan, idioma);
                plEcoSelect.add(new SelectItem(plan.getIdPlan(), t.getLiteral(),
                        t.getDescLiteral()));
                /**
                 * *********
                 * //planesEco.get(i).getNombre(),
                 * planesEco.get(i).getDescripcion())); ********
                 */
            }
        } catch (RuntimeException e) {
            JSFUtil.createMessageError("", "error_general");
            logger.error("Se he producido un error al cargar la lista de Planes Economicos",e);
        }
    }

    public void cargaListaPlOcio() {
        try {
            plOcioSelect = new ArrayList<>();
            List<PlanOcio> planesOcio = datoAuxiliarService.getListaPlanesOcio();
            for (int i = 0; i < planesOcio.size(); i++) {
                //int idPlan = planesEco.get(i).getIdPlan();
                PlanOcio plan = planesOcio.get(i);
                //PlanOcioTrad pot = propuestaService.getPlanOcioTrad(plan, idioma);
                Traduccion t = i18nManager.getTraduccion(plan, idioma);
                plOcioSelect.add(new SelectItem(plan.getIdPlanesOcio(), t.getLiteral(),
                        t.getDescLiteral()));
                /**
                 * *********
                 * //planesEco.get(i).getNombre(),
                 * planesEco.get(i).getDescripcion())); ********
                 */
            }
        } catch (RuntimeException e) {
            JSFUtil.createMessageError("", "error_general");
            logger.error("Se he producido un error al cargar la lista de Planes de Ocio",e);
        }
    }
    /*
     public void clear(final String parentComponentId) {
     UIViewRoot view = FacesContext.getCurrentInstance().getViewRoot();
     UIComponent fc = view.findComponent(parentComponentId);
     if (null != fc) {
     List<UIComponent> components = fc.getChildren();
     for (UIComponent component : components) {
     if (component instanceof UIInput) {
     UIInput input = (UIInput) component;
     // JSF 1.1+
     //                input.setSubmittedValue(null);
     //                input.setValue(null);
     //                input.setLocalValueSet(false);
     //                input.setValid(true);
     // JSF 1.2+
     input.resetValue();
     }
     }
     }
     //return null;
     }
     */

    public List<SelectItem> getPaisSelect() {
        return paisSelect;
    }

    public void setPaisSelect(List<SelectItem> newPaisSelect) {
        paisSelect = newPaisSelect;
    }

    public List<SelectItem> getPlEcoSelect() {
        return plEcoSelect;
    }

    public void setPlEcoSelect(List<SelectItem> newPlEcoSelect) {
        plEcoSelect = newPlEcoSelect;
    }

    public List<SelectItem> getPlOcioSelect() {
        return plOcioSelect;
    }

    public void setPlOcioSelect(List<SelectItem> newplOcioSelect) {
        plOcioSelect = newplOcioSelect;
    }

    public Integer getPlanEco() {
        return planEco;
    }

    public void setPlanEco(Integer planEco) {
        this.planEco = planEco;
    }

    public Integer getPlanOcio() {
        return planOcio;
    }

    public void setPlanOcio(Integer planOcio) {
        this.planOcio = planOcio;
    }

    public String getDescriplan() {
        return descriplan;
    }

    public void setDescriplan(String descriplan) {
        this.descriplan = descriplan;
    }

    public String getDescriplocio() {
        return descriplocio;
    }

    public void setDescriplocio(String descriplocio) {
        this.descriplocio = descriplocio;
    }

    public void listenPlanChange() {
        if (planEco == null) {
            descriplan = "";
        } else {
            for (int i = 0; i < getPlEcoSelect().size(); i++) {
                if (getPlEcoSelect().get(i).getValue().equals(planEco)) {
                    descriplan = getPlEcoSelect().get(i).getDescription();
                }
            }
        }
    }

    public void listenPlOcioChange() {
        if (planOcio == null) {
            descriplocio = "";
        } else {
            for (int i = 0; i < getPlOcioSelect().size(); i++) {
                if (getPlOcioSelect().get(i).getValue().equals(planOcio)) {
                    descriplocio = getPlOcioSelect().get(i).getDescription();
                }
            }
        }
    }
}
